package cn.tedu.spring.life;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

/**
 * spring bean对象的生命周期
 - 实例化[构造方法]
 - 属性赋值[set方法]
 - 初始化[生命周期初始化方法PostConstruct]
 - 使用阶段
 - 销毁阶段[生命周期的销毁方法PreDestroy]
 */
@Component
public class Life {
    private String mean;

    /**
     * 1.调用无参构造方法进行bean对象创建
     */
    public Life() {
        System.out.println("1.调用无参构造进行实例化");
    }

    /**
     * 2.通过setter()方法进行属性赋值
     */
    @Value("世界这莫大，我想去看看！")
    public void setMean(String mean) {
        this.mean = mean;
        System.out.println("2.通过set方法给bean对象赋值");
    }

    /**
     * 3.对象创建后可以通过此方法进行初始化
     */
    @PostConstruct
    public void init() {
        System.out.println("3.生命周期初始化方法");
    }

    /**
     * 5.对象销毁前可以通过此方法进行资源释放
     */
    @PreDestroy
    public void destroy() {
        System.out.println("5.bean对象销毁，释放资源");
    }


}
